package br.com.advocacia.logica.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import br.com.advocacia.dao.generico.DaoGenerico;
import br.com.advocacia.logica.contract.DefaultLogicaContract;

@Service("logicaDefault")
public class DefaultLogica<T> implements DefaultLogicaContract<T> {

	private static final long serialVersionUID = 1L;

	@Autowired
	private DaoGenerico<T> daoGenerico;
	
	@Override
	public void adicionar(T entidade) throws Exception {
		daoGenerico.adicionar(entidade);
	}

	@Override
	public void editar(T entidade) throws Exception {
		daoGenerico.editar(entidade);
	}

	@SuppressWarnings("unchecked")
	@Override
	public void remover(@SuppressWarnings("rawtypes") Class entidade, Long idEntidade) throws Exception {
		daoGenerico.remover(entidade, idEntidade);
	}

	@SuppressWarnings("unchecked")
	@Override
	public T obterPorId(@SuppressWarnings("rawtypes") Class entidade, Long idEntidade) throws Exception {
		return (T) daoGenerico.obterPorId(entidade, idEntidade);
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<T> buscarTodos(@SuppressWarnings("rawtypes") Class entidade, String campoOrdenacao) throws Exception {
		return daoGenerico.buscarTodos(entidade, campoOrdenacao);
	}
	
	@SuppressWarnings("unchecked")
	@Override
	public List<T> buscarPorCampo(@SuppressWarnings("rawtypes") Class entidade, String campo, Object valor) throws Exception {
		return daoGenerico.buscarPorCampo(entidade, campo, valor);
	}

}
